Edge gesture interface with smart interactions

ABSTRACT

Methods, systems, user interfaces, media, and devices provide a geographically-based graphical user interface (GUI) suited to single-handed operation of a device. The method and system provide for causing display of a GUI including map data displayed in a first view; receiving input comprising at least one input point; determining first and second characteristics of the input; processing, when the first characteristic fulfils a first operational mode criterion, the input according to a first operational mode and causing display of the map data in a second view, the second view being based on the second characteristic of the input; and processing, when the first characteristic of the input fulfils a second operational mode criterion, the input according to a second operational mode, and causing display of the map data in a third view, the third view being based on the second characteristic of the input.

PRIORITY CLAIM

This application is a continuation of U.S. patent application Ser. No.16/946,946, filed Jul. 13, 2020, which application claims the benefit ofpriority of U.S. Provisional Patent Application No. 62/873,077, filedJul. 11, 2019, which are hereby incorporated by reference herein intheir entirety.

BACKGROUND

The popularity of location sharing, particularly real-time locationsharing, used in conjunction with a social networking applicationcontinues to grow. Users increasingly share their location with eachother facilitated by dynamically updated map interfaces. Navigating mapinterfaces can at times present users with difficulties, particularlywhen the user has the use of only one hand. In the absence of aconvenient input interface, the user's facility for interacting withshared location-based information is impeded. Embodiments of the presentdisclosure address these and other issues.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

To easily identify the discussion of any particular element or act, themost significant digit or digits in a reference number refer to thefigure number in which that element is first introduced.

FIG. 1 is a diagrammatic representation of a networked environment inwhich a portable display device of the present disclosure may bedeployed, in accordance with some example embodiments.

FIG. 2 is a diagrammatic representation of a data structure asmaintained in a database, in accordance with some example embodiments.

FIG. 3 is a diagrammatic representation of a processing environment, inaccordance with some example embodiments.

FIG. 4 is block diagram showing a software architecture within which thepresent disclosure may be implemented, in accordance with some exampleembodiments.

FIG. 5 is a diagrammatic representation of a machine, in the form of acomputer system within which a set of instructions may be executed forcausing the machine to perform any one or more of the methodologiesdiscussed, in accordance with some example embodiments.

FIG. 6 illustrates a method in accordance with some example embodiments.

FIG. 7 illustrates a user interface in a zoom operation mode displayedon a display screen of a portable display device, in accordance withsome example embodiments.

FIG. 8 illustrates a user interface in a tilt operation mode displayedon a display screen of a portable display device, in accordance withsome example embodiments.

FIG. 9 illustrates a user interface in a rotate operation mode displayedon a display screen of a portable display device, in accordance withsome example embodiments.

FIG. 10 illustrates a user interface in a zoom operation mode displayedon a display screen of a portable display device, in accordance withsome example embodiments.

FIG. 11 illustrates a user interface in a tilt operation mode displayedon a display screen of a portable display device, in accordance withsome example embodiments.

FIG. 12 illustrates a user interface in a rotate operation modedisplayed on a display screen of a portable display device, inaccordance with some example embodiments.

DETAILED DESCRIPTION

Embodiments of the present disclosure provide a geographically-basedgraphical user interface (GUI) suited to single-handed operation of aportable display device. This user interface may be referred to hereinas a “map GUI,” and may be used in conjunction with a location-sharingsystem.

Various embodiments of the present disclosure provide systems, methods,techniques, instruction sequences, and computing machine programproducts for dynamically displaying a map GUI of a computer system. Thelocations of participants of a communication session established via amessaging system, in particular an instant messaging system may beshared through such a map GUI.

Map data and user location data may be displayed and/or updated inreal-time or almost real-time. However, where different users are closetogether or where the map data represents an entire city, for example,the user often desires to increase the scale (i.e. “zoom in”) of thedisplayed map to allow greater map or user location detail to bediscerned. In other scenarios, the opposite requirement is called for:the user may also wish to decrease the scale (i.e. “zoom out”) of thedisplayed map to allow the broader context of the map data and/orgeographic distribution of user locations to be identified.

Conventional map GUIs provide a zoom interaction in which the scale atwhich the map data is presented is altered in proportion with a measuredvalue of a characteristic of a touchscreen gesture. Examples of suchmeasured values include the change in distance between two distincttouch points in the so-called “pinch-to-zoom” mechanic, or the verticaldistance covered in a single sliding gesture vertically upwards at thevertical edge of a touchscreen in the “edge zoom” mechanic.

The edge zoom mechanic facilitates single handed use, in which a singlehand both grips the portable display device and a digit of the same handtouches a touchscreen to provide the sliding gesture. For example, thecontinuous sliding gesture is made by swiping the tip of the thumb alongthe screen edge while the map GUI presents map data.

The zoom interaction is not the only mode of interaction a user may wishto have with the map GUI. The user may additionally or alternativelywish to view a projection of a three-dimensional representation of aselected map location (i.e. “tilt mode”). In certain cases, the user maywish to view such a projection from a different angle relative to themap plane (i.e. tilt angle) rather than viewing the projection fromdirectly overhead. Certain map applications include a facility foraltering the tilt of user's line of sight.

Additionally or alternatively, the user may wish to rotate the map datapresented on the screen of the portable display device (i.e. “rotation”mode), so that, for example, the user may orient the map data in aconvenient manner. Rotation is typically achieved by applying a twistinggesture in the pinch-to-zoom mechanic—an action which is inconvenient,if not impossible, in single handed operation.

Some embodiments provide various improvements over conventionalgeographically-based user interfaces by extending the range ofinteraction modes available to the user through user input from a singledigit of a single hand.

Some embodiments provide for the recognition of the handedness of theone-handed user. Left-handed and right-handed operation may bedistinguished and the subsequent input processed accordingly.

Some embodiments provide further improvements over conventional userinterfaces by combining data from multiple data sources. This multipledata sources may be of different nature, for example, a geographical mapdata source and a user-related data source.

The description that follows includes systems, methods, techniques,instruction sequences, and computing machine program products thatembody illustrative embodiments of the disclosure. In the followingdescription, for the purposes of explanation, numerous specific detailsare set forth in order to provide an understanding of variousembodiments of the inventive subject matter. It will be evident,however, to those skilled in the art, that embodiments of the inventivesubject matter may be practiced without these specific details. Ingeneral, well-known instruction instances, protocols, structures, andtechniques are not necessarily shown in detail.

In some embodiments, a communication session is established via amessaging system between a plurality of participants. The messagingsystem receives, from a client device of a participant, via a wirelesscommunication over a network, an electronic communication containinglocation information of the client device. The messaging systemdetermines, based on the location information, a current location of theparticipant. The messaging system displays, on display screens of clientdevices of the other participants of the communication session, anindication of the location of the participant within a messaging userinterface (messaging UI). In various embodiments, the collection andsharing of location information is presented as a selectable optionwithin privacy settings of a device or application.

The present disclosure provides various improvements over conventionaluser interfaces. According to some embodiments, a multi-modalgeographically-based user interface (map UI) is provided, therebyproviding a more convenient interface for single-handed operation of aportable display device. Furthermore, the provided interface facilitatesthe combination of gestures in different input modes, improving thespeed of a user's navigation of the map and user location data (e.g.navigating within the map UI to access the location of the participants)and ultimately making more efficient use of resources (processor,battery, screen space, and other such resources).

FIG. 1 is a block diagram showing an example messaging system 100 forexchanging data (e.g., messages and associated content) over a network.The messaging system 100 includes multiple instances of a client device102, each of which hosts a number of applications including a messagingclient application 104. Each messaging client application 104 iscommunicatively coupled to other instances of the messaging clientapplication 104 and a messaging server system 108 via a network 106(e.g., the Internet).

A messaging client application 104 is able to communicate and exchangedata with another messaging client application 104 and with themessaging server system 108 via the network 106. The data exchangedbetween messaging client application 104, and between a messaging clientapplication 104 and the messaging server system 108, includes functions(e.g., commands to invoke functions) as well as payload data (e.g.,text, audio, video or other multimedia data).

The messaging server system 108 provides server-side functionality viathe network 106 to a particular messaging client application 104. Whilecertain functions of the messaging system 100 are described herein asbeing performed by either a messaging client application 104 or by themessaging server system 108, the location of certain functionalityeither within the messaging client application 104 or the messagingserver system 108 is a design choice. For example, it may be technicallypreferable to initially deploy certain technology and functionalitywithin the messaging server system 108, but to later migrate thistechnology and functionality to the messaging client application 104where a client device 102 has a sufficient processing capacity.

The messaging server system 108 supports various services and operationsthat are provided to the messaging client application 104. Suchoperations include transmitting data to, receiving data from, andprocessing data generated by the messaging client application 104. Thisdata may include, message content, client device information, map data,geolocation information, media annotation and overlays, message contentpersistence conditions, social network information, and live eventinformation, as examples. Data exchanges within the messaging system 100are invoked and controlled through functions available via userinterfaces (UIs) of the messaging client application 104.

Turning now specifically to the messaging server system 108, anApplication Program Interface (API) server 110 is coupled to, andprovides a programmatic interface to, an application server 112. Theapplication server 112 is communicatively coupled to a database server118, which facilitates access to a database 120 in which is stored dataassociated with messages processed by the application server 112.

The Application Program Interface (API) server 110 receives andtransmits message data (e.g., commands and message payloads) between theclient device 102 and the application server 112. Specifically, theApplication Program Interface (API) server 110 provides a set ofinterfaces (e.g., routines and protocols) that can be called or queriedby the messaging client application 104 in order to invoke functionalityof the application server 112. The Application Program Interface (API)server 110 exposes various functions supported by the application server112, including account registration, login functionality, the sending ofmessages, via the application server 112, from a particular messagingclient application 104 to another messaging client application 104, thesending of media files (e.g., images or video) from a messaging clientapplication 104 to the messaging server application 114, and forpossible access by another messaging client application 104, the settingof a collection of media data (e.g., story), the retrieval of a list offriends of a user of a client device 102, the retrieval of suchcollections, the retrieval of messages and content, the adding anddeletion of friends to a social graph, the location of friends within asocial graph, and opening an application event (e.g., relating to themessaging client application 104).

The application server 112 hosts a number of applications andsubsystems, including a messaging server application 114, an imageprocessing system 116 and a social network system 122. The messagingserver application 114 implements a number of message processingtechnologies and functions, particularly related to the aggregation andother processing of content (e.g., textual and multimedia content)included in messages received from multiple instances of the messagingclient application 104. As will be described in further detail, the textand media content from multiple sources may be aggregated intocollections of content (e.g., called stories or galleries). Thesecollections are then made available, by the messaging server application114, to the messaging client application 104. Other processor and memoryintensive processing of data may also be performed server-side by themessaging server application 114, in view of the hardware requirementsfor such processing.

The application server 112 also includes a location sharing system 116supporting a geographically-based GUI (i.e. map UI). In someembodiments, the geographically-based GUI may include, in addition tomap data representing a portion of a geographic map, representations ofat least approximate respective positions of a user of client device 102and of other users (e.g. the positions of a user's friends in a socialnetwork graph accessed by the social media application) using avatarsfor each respective user.

The social network system 122 may receive user authorization to use, orrefrain from using, the user's location information. In someembodiments, the social network system 122 may likewise opt to share ornot share the user's location with others via the map UI. In some cases,the user's avatar may be displayed to the user on the display screen ofthe user's computing device regardless of whether the user is sharinghis or her location with other users.

In some embodiments, when viewing the map UI, the user is able to seethe location of all his/her friends that have shared their location withthe user on the map, each friend represented by their respective avatar.

In some embodiments, the user can select between friends on the map viaa menu, such as a carousel. In some embodiments, selecting a particularfriend automatically centers the map view on the avatar of that friend.Embodiments of the present disclosure may also allow the user to take avariety of actions with the user's friends from within the map UI. Forexample, the system may allow the user to chat with the user's friendswithout leaving the map. In one particular example, the user may selecta chat icon from a menu presented in conjunction with the map UI toinitiate a chat session.

The application server 112 is communicatively coupled to a databaseserver 118, which facilitates access to a database 120 in which isstored data associated with messages processed by the messaging serverapplication 114.

The social network system 122 supports various social networkingfunctions services and makes these functions and services available tothe messaging server application 114. To this end, the social networksystem 122 maintains and accesses an entity graph 204 (as shown in FIG.2) within the database 120. Examples of functions and services supportedby the social network system 122 include the identification of otherusers of the messaging system 100 with which a particular user hasrelationships or is “following”, and also the identification of otherentities and interests of a particular user.

FIG. 2 is a schematic diagram illustrating data structures 200 which maybe stored in the database 120 of the messaging server system 108,according to certain example embodiments. While the content of thedatabase 120 is shown to comprise a number of tables, it will beappreciated that the data could be stored in other types of datastructures (e.g., as an object-oriented database).

The database 120 includes message data stored within a message table208. An entity table 202 stores entity data, including an entity graph204. Entities for which records are maintained within the entity table202 may include individuals (e.g., users), corporate entities,organizations, objects, places, events, etc. Regardless of type, anyentity regarding which the messaging server system 108 stores data maybe a recognized entity. Each entity is provided with a uniqueidentifier, as well as an entity type identifier (not shown). The entitygraph 204 furthermore stores information regarding relationships andassociations between entities. Such relationships may be social,professional (e.g., work at a common corporation or organization)interested-based or activity-based, merely for example. A location table206 stores historical and current location information of users (e.g.,geolocation information determined by the position components 538 of theclient device 102).

Turning now to FIG. 3, there is shown a diagrammatic representation of aprocessing environment 300, which includes at least a processor 302(e.g., a GPU, CPU or combination thereof).

The processor 302 is shown to be coupled to a power source 304, and toinclude (either permanently configured or temporarily instantiated)modules, namely a location component 308, a map UI component 310, and amessaging UI component 312. The location component 308 operationallydetermines locations of users based on location information. The map UIcomponent 310 operationally generates user interfaces and causes theuser interfaces to be displayed on client devices. The messaging UIcomponent 312 operationally generates user interfaces and causes theuser interfaces to be displayed on client devices. As illustrated, theprocessor 302 may be communicatively coupled to another processor 306.

FIG. 4 is a block diagram 400 illustrating a software architecture 404,which can be installed on any one or more of the devices describedherein, in particular upon the client device 102. The softwarearchitecture 404 is supported by hardware such as a machine 402 thatincludes processors 420, memory 426, and I/O components 438. In thisexample, the software architecture 404 can be conceptualized as a stackof layers, where each layer provides a particular functionality. Thesoftware architecture 404 includes layers such as an operating system412, libraries 410, frameworks 408, and applications 406. Operationally,the applications 406 invoke API calls 450 through the software stack andreceive messages 452 in response to the API calls 450.

The operating system 412 manages hardware resources and provides commonservices. The operating system 412 includes, for example, a kernel 414,services 416, and drivers 422. The kernel 414 acts as an abstractionlayer between the hardware and the other software layers. For example,the kernel 414 provides memory management, processor management (e.g.,scheduling), component management, networking, and security settings,among other functionality. The services 416 can provide other commonservices for the other software layers. The drivers 422 are responsiblefor controlling or interfacing with the underlying hardware. Forinstance, the drivers 422 can include display drivers, camera drivers,BLUETOOTH® or BLUETOOTH® Low Energy drivers, flash memory drivers,serial communication drivers (e.g., Universal Serial Bus (USB) drivers),WI-FI® drivers, audio drivers, power management drivers, and so forth.

The libraries 410 provide a low-level common infrastructure used by theapplications 406. The libraries 410 can include system libraries 418(e.g., C standard library) that provide functions such as memoryallocation functions, string manipulation functions, mathematicfunctions, and the like. In addition, the libraries 410 can include APIlibraries 424 such as media libraries (e.g., libraries to supportpresentation and manipulation of various media formats such as MovingPicture Experts Group-4 (MPEG4), Advanced Video Coding (H.264 or AVC),Moving Picture Experts Group Layer-3 (MP3), Advanced Audio Coding (AAC),Adaptive Multi-Rate (AMR) audio codec, Joint Photographic Experts Group(JPEG or JPG), or Portable Network Graphics (PNG)), graphics libraries(e.g., an OpenGL framework used to render in two dimensions (2D) andthree dimensions (3D) in a graphic content on a display), databaselibraries (e.g., SQLite to provide various relational databasefunctions), web libraries (e.g., WebKit to provide web browsingfunctionality), and the like. The libraries 410 can also include a widevariety of other libraries 428 to provide many other APIs to theapplications 406.

The frameworks 408 provide a high-level common infrastructure that isused by the applications 406. For example, the frameworks 408 providevarious graphical user interface (GUI) functions, high-level resourcemanagement, and high-level location services. The frameworks 408 canprovide a broad spectrum of other APIs that can be used by theapplications 406, some of which may be specific to a particularoperating system or platform.

In an example embodiment, the applications 406 may include a homeapplication 436, a contacts application 430, a browser application 432,a book reader application 434, a location application 442, a mediaapplication 444, a messaging application 446, a game application 448,and a broad assortment of other applications such as third-partyapplications 440. The applications 406 are programs that executefunctions defined in the programs. Various programming languages can beemployed to create one or more of the applications 406, structured in avariety of manners, such as object-oriented programming languages (e.g.,Objective-C, Java, or C++) or procedural programming languages (e.g., Cor assembly language). In a specific example, the third-partyapplications 440 (e.g., applications developed using the ANDROID™ orIOS™ software development kit (SDK) by an entity other than the vendorof the particular platform) may be mobile software running on a mobileoperating system such as IOS™, ANDROID™, WINDOWS® Phone, or anothermobile operating system. In this example, the third-party applications440 can invoke the API calls 450 provided by the operating system 412 tofacilitate functionality described herein.

The location application 442, when executed, may implement thegeographically-based GUI, which in turn may cause the display of mapdata and user location data.

FIG. 5 is a diagrammatic representation of a machine 500 within whichinstructions 508 (e.g., software, a program, an application, an applet,an app, or other executable code) for causing the machine 500 to performany one or more of the methodologies discussed herein may be executed.For example, the instructions 508 may cause the machine 500 to executeany one or more of the methods described herein. The instructions 508transform the general, non-programmed machine 500 into a particularmachine 500 programmed to carry out the described and illustratedfunctions in the manner described. The machine 500 may operate as astandalone device or may be coupled (e.g., networked) to other machines.In a networked deployment, the machine 500 may operate in the capacityof a server machine or a client machine in a server-client networkenvironment, or as a peer machine in a peer-to-peer (or distributed)network environment. The machine 500 may comprise, but not be limitedto, a server computer, a client computer, a personal computer (PC), atablet computer, a laptop computer, a netbook, a set-top box (STB), aPDA, an entertainment media system, a cellular telephone, a smart phone,a mobile device, a wearable device (e.g., a smart watch), a smart homedevice (e.g., a smart appliance), other smart devices, a web appliance,a network router, a network switch, a network bridge, or any machinecapable of executing the instructions 508, sequentially or otherwise,that specify actions to be taken by the machine 500. Further, while onlya single machine 500 is illustrated, the term “machine” shall also betaken to include a collection of machines that individually or jointlyexecute the instructions 508 to perform any one or more of themethodologies discussed herein.

The machine 500 may include processors 502, memory 504, and I/Ocomponents 542, which may be configured to communicate with each othervia a bus 544. In an example embodiment, the processors 502 (e.g., aCentral Processing Unit (CPU), a Reduced Instruction Set Computing(RISC) processor, a Complex Instruction Set Computing (CISC) processor,a Graphics Processing Unit (GPU), a Digital Signal Processor (DSP), anASIC, a Radio-Frequency Integrated Circuit (RFIC), another processor, orany suitable combination thereof) may include, for example, a processor506 and a processor 510 that execute the instructions 508. The term“processor” is intended to include multi-core processors that maycomprise two or more independent processors (sometimes referred to as“cores”) that may execute instructions contemporaneously. Although FIG.5 shows multiple processors 502, the machine 500 may include a singleprocessor with a single core, a single processor with multiple cores(e.g., a multi-core processor), multiple processors with a single core,multiple processors with multiples cores, or any combination thereof.

The memory 504 includes a main memory 512, a static memory 514, and astorage unit 516, both accessible to the processors 502 via the bus 544.The main memory 504, the static memory 514, and storage unit 516 storethe instructions 508 embodying any one or more of the methodologies orfunctions described herein. The instructions 508 may also reside,completely or partially, within the main memory 512, within the staticmemory 514, within machine-readable medium 518 within the storage unit516, within at least one of the processors 502 (e.g., within theprocessor's cache memory), or any suitable combination thereof, duringexecution thereof by the machine 500.

The I/O components 542 may include a wide variety of components toreceive input, provide output, produce output, transmit information,exchange information, capture measurements, and so on. The specific I/Ocomponents 542 that are included in a particular machine will depend onthe type of machine. For example, portable machines such as mobilephones may include a touch input device or other such input mechanisms.It will be appreciated that the I/O components 542 may include manyother components that are not shown in FIG. 5. In various exampleembodiments, the I/O components 542 may include output components 528and input components 530. The output components 528 may include visualcomponents (e.g., a display such as a plasma display panel (PDP), alight emitting diode (LED) display, a liquid crystal display (LCD), aprojector, or a cathode ray tube (CRT)), acoustic components (e.g.,speakers), haptic components (e.g., a vibratory motor, resistancemechanisms), other signal generators, and so forth. The input components530 may include alphanumeric input components (e.g., a keyboard, a touchscreen configured to receive alphanumeric input, a photo-opticalkeyboard, or other alphanumeric input components), point-based inputcomponents (e.g., a mouse, a touchpad, a trackball, a joystick, a motionsensor, or another pointing instrument), tactile input components (e.g.,a physical button, a touch screen that provides location and/or force oftouches or touch gestures, or other tactile input components), audioinput components (e.g., a microphone), and the like.

In certain classes of machine, it may be convenient to provideintegrated I/O components that operate as both input and outputcomponents. In portable machines such as mobile phones, a touch inputdevice may be integrated with a display device to provide a touchscreendisplay. Such touchscreen display devices may allow the user to inputcommands as hand, stylus or finger gestures that are visually associatedwith elements displayed in a graphical user interface. The resultinggraphical user interface is thus convenient and intuitive for non-expertusers.

In further example embodiments, the I/O components 542 may includebiometric components 532, motion components 534, environmentalcomponents 536, or position components 538, among a wide array of othercomponents. For example, the biometric components 532 include componentsto detect expressions (e.g., hand expressions, facial expressions, vocalexpressions, body gestures, or eye tracking), measure biosignals (e.g.,blood pressure, heart rate, body temperature, perspiration, or brainwaves), identify a person (e.g., voice identification, retinalidentification, facial identification, fingerprint identification, orelectroencephalogram-based identification), and the like. The motioncomponents 534 include acceleration sensor components (e.g.,accelerometer), gravitation sensor components, rotation sensorcomponents (e.g., gyroscope), and so forth. The environmental components536 include, for example, illumination sensor components (e.g.,photometer), temperature sensor components (e.g., one or morethermometers that detect ambient temperature), humidity sensorcomponents, pressure sensor components (e.g., barometer), acousticsensor components (e.g., one or more microphones that detect backgroundnoise), proximity sensor components (e.g., infrared sensors that detectnearby objects, as well as optical, ultrasonic, capacitive or andmagnetic sensors), gas sensors (e.g., gas detection sensors to detectionconcentrations of hazardous gases for safety or to measure pollutants inthe atmosphere), or other components that may provide indications,measurements, or signals corresponding to a surrounding physicalenvironment. The position components 538 include location sensorcomponents (e.g., a GPS receiver component), altitude sensor components(e.g., altimeters or barometers that detect air pressure from whichaltitude may be derived), orientation sensor components (e.g.,magnetometers), and the like.

Communication may be implemented using a wide variety of technologies.The I/O components 542 further include communication components 540operable to couple the machine 500 to a network 520 or devices 522 via acoupling 524 and a coupling 526, respectively. For example, thecommunication components 540 may include a network interface componentor another suitable device to interface with the network 520. In furtherexamples, the communication components 540 may include wiredcommunication components, wireless communication components, cellularcommunication components, Near Field Communication (NFC) components,Bluetooth® components (e.g., Bluetooth® Low Energy), Wi-Fi® components,and other communication components to provide communication via othermodalities. The devices 522 may be another machine or any of a widevariety of peripheral devices (e.g., a peripheral device coupled via aUSB).

Moreover, the communication components 540 may detect identifiers orinclude components operable to detect identifiers. For example, thecommunication components 540 may include Radio Frequency Identification(RFID) tag reader components, NFC smart tag detection components,optical reader components (e.g., an optical sensor to detectone-dimensional bar codes such as Universal Product Code (UPC) bar code,multi-dimensional bar codes such as Quick Response (QR) code, Azteccode, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2Dbar code, and other optical codes), or acoustic detection components(e.g., microphones to identify tagged audio signals). In addition, avariety of information may be derived via the communication components540, such as location via Internet Protocol (IP) geolocation, locationvia Wi-Fi® signal triangulation, location via detecting an NFC beaconsignal that may indicate a particular location, and so forth.

The various memories (e.g., memory 504, main memory 512, static memory514, and/or memory of the processors 502) and/or storage unit 516 maystore one or more sets of instructions and data structures (e.g.,software) embodying or used by any one or more of the methodologies orfunctions described herein. These instructions (e.g., the instructions508), when executed by processors 502, cause various operations toimplement the disclosed embodiments.

The instructions 508 may be transmitted or received over the network520, using a transmission medium, via a network interface device (e.g.,a network interface component included in the communication components540) and using any one of a number of well-known transfer protocols(e.g., hypertext transfer protocol (HTTP)). Similarly, the instructions508 may be transmitted or received using a transmission medium via thecoupling 526 (e.g., a peer-to-peer coupling) to the devices 522.

FIG. 6 is a flowchart illustrating a method 600 for presenting map datavia a geographically-based user interfaces. Where user location data isavailable, the method further facilitates sharing of the respectivelocations of other users. The method 600 may be embodied incomputer-readable instructions for execution by one or more processors(e.g., processor 302) such that the steps of the method 600 may beperformed in part or in whole by functional components (e.g., locationcomponent 308, map UI component 312, messaging UI component 312) of aclient device 102 with a processing environment 300; accordingly, themethod 600 is described below by way of example with reference thereto.However, the method 600 may be deployed on various other hardwareconfigurations and is not intended to be limited to the functionalcomponents of the processing environment 300.

In operation 602, a processor of a portable display device causes thedisplay of a geographically-based graphical user interface on a displayscreen of the portable display device. The geographically-basedgraphical user interface includes map data. The map data may bedisplayed in a first view, i.e. from a particular perspective,projection or point of view and at a particular scale.

In operation 604, the processor receives input via a gesture detectionmodule, the input comprising at least one input point. In someembodiments, the input is a swipe-touch gesture where the user's fingercontacts the touchscreen of the portable display device at a firstlocation on the screen, maintains contact as a finger movement isexecuted, and then ceases contact at a second location on the screen. Insome embodiments, the level of finger pressure is measured during atouch gesture so that the input is a long-press gesture where the user'sfinger contacts the touchscreen of the portable display device,maintains contact while applying a varying amount of pressure, and thenceases contact on the screen. In some embodiments, the input comprises atime-separated sequence of input points provided in single-handedoperation of the portable display device. The single-handed operationmay be operation by the right hand or by the left hand alone of theuser.

In operation 606, the processor determines at least a firstcharacteristic and a second characteristic of the input, where thesecond characteristic is different from the first characteristic.Examples of first and second characteristic include: horizontaldisplacement (X) of an initial input point relative to a point at anedge of the display screen; a count of the number of tap gestures in apredetermined period of time; a duration of a single press touch; ameasure of the pressure applied in a press touch; vertical displacement(Y) relative to an initial point in the map data; and vertical speed(v_(y)) or horizontal speed (v_(x)) of a displacement from an initialinput point to a subsequent input point in the input.

In some embodiments, the first operational mode criterion may befulfilled when the first characteristic takes a value in a first rangeof values. Additionally, the second operational mode criterion may befulfilled when the first characteristic takes a value in a second rangeof values.

When it is determined that the first characteristic of the input fulfilsa first operational mode criterion, the processor processes the inputaccording to a first operational mode and causing the display screen todisplay the map data in a second view, the second view being based onthe second characteristic of the input (operation 608). In someembodiments, the second view may differ from the first view in respectof at least one of perspective, projection or point of view and scale.

In operation 610, when it is determined the first characteristic of theinput fulfils a second operational mode criterion, the processorprocesses the input according to a second operational mode. The secondoperational mode criterion is different from the first operational modecriterion and the second operational mode is different from the firstoperational mode. The processor then causes the display screen todisplay the map data in a third view, the third view being based on thesecond characteristic of the input. In some embodiments, the third viewmay differ from the first and the second view in respect of at least oneof perspective, projection or point of view and scale.

In some embodiments, the first operational mode and the secondoperational mode may each be selected from a group of operational modesincluding a tilt operation mode, a rotate operation mode, a dragoperation mode, and a zoom operation mode.

In certain embodiments, processing the input according to the tiltoperation mode may comprise changing the angle of tilt of a projectionof the map data displayed on the display screen from a default tiltangle to an input tilt angle proportional to the second characteristicof the input.

In certain embodiments, processing the input according to the rotateoperation mode may comprise changing the orientation of the map datadisplayed on the display screen from a default orientation angle to aninput rotation angle proportional to the second characteristic of theinput.

In certain embodiments, processing the input according to the dragoperation mode may comprise moving a center coordinate of the displayscreen relative to a default coordinate in the map data from the defaultcoordinate to an input coordinate along a predetermined path, themagnitude of movement being proportional to the second characteristic ofthe input.

In certain embodiments, processing the input according to the zoomoperation mode may comprise changing the orientation of the map datadisplayed on the display screen from a default scale to an input scaleproportional to the second characteristic of the input.

In certain embodiments, the geographically-based graphical userinterface may further include user location data for at least one user,the user location data being displayed in at least one of the firstview, second view or third view by depicting an avatar associated withthe at least one user.

In certain embodiments, the first operational mode criterion may befulfilled when the first characteristic takes a value at an initialinput point, regardless of the value of first characteristic taken bysubsequent input points of the input.

In certain embodiments, the first operational mode criterion may befulfilled when the first characteristic takes a value at an initialinput point and the value of first characteristic taken by subsequentinput points of the input remains within a tolerance range encompassing,and wider than, the first range of values.

In certain embodiments, the operation of the geographically-basedgraphical user interface in a given operational mode is indicatedthrough the display of at least one graphical element over the map dataof the geographically-based graphical user interface in a color orpattern corresponding to the respective operational mode.

In certain embodiments, the first characteristic is horizontaldisplacement (X) of an initial input point relative to a point at anedge of the display screen. In such embodiments, the first operationalmode criterion may be fulfilled when the horizontal displacement takes avalue in a first range of values. Additionally, the second operationalmode criterion may be fulfilled when the horizontal displacement takes avalue in a second range of values. In certain such embodiments, thesecond characteristic is vertical displacement (Y) relative to aninitial point in the map data. FIGS. 7 to 12 illustrate various aspectsof these embodiments.

As shown in FIGS. 7 to 9, the input of a (right-handed) user isdisplayed as a partially transparent lobe component extending from theright-hand side of an example map GUI and overlaying map data in a firstview. The furthest extent of the lobe component leftwards from the edgetogether with its vertical position corresponds to the current positionat which the user is touching a touchscreen of a display devicedisplaying the example map GUI.

FIG. 7 illustrates the map GUI in zoom operation mode. The horizontaldisplacement 702 of the leftwards lobe component is seen to be within arelatively short distance from the right-hand edge, in a range from0>X>X₁, where X₁ is the boundary of the range of horizontal displacementvalues associated with a zoom operation mode. Vertical displacement (Y)of the point at which the user touches the touchscreen in zoom operationmode is interpreted as an indication of the desired level of zoom (i.e.map scale). In some embodiments, the vertical displacement relative tothe lower edge of the screen is in linear proportion to the desiredlevel of zoom. In some embodiments, the vertical displacement relativeto the lower edge of the screen is in logarithmic proportion to thedesired level of zoom.

FIG. 8 illustrates the map GUI in tilt operation mode. The horizontaldisplacement 802 of the leftwards lobe component is seen to be within adistance from the right-hand edge, in a range from X₁>X>X₂, where X₂ isthe upper boundary of the range of horizontal displacement valuesassociated with a tilt operation mode. The underlying map data is seento be viewed in a second view, presenting the map data in athree-dimensional projection having a lower viewing angle than in thefirst view illustrated in FIG. 7. Vertical displacement (Y) of the pointat which the user touches the touchscreen in tilt operation mode isinterpreted as an indication of the desired viewing angle (i.e. angle oftilt relative to a normal viewing angle from directly above).

FIG. 9 illustrates the map GUI in rotate operation mode. The horizontaldisplacement 902 of the leftwards lobe component is seen to be within adistance from the right-hand edge, in a range from X₂>X>X₃, where X₃ isthe upper boundary of the range of horizontal displacement valuesassociated with a rotate operation mode. For the sake of illustration,the underlying map data is overlaid by an indicator of rotation.Vertical displacement (Y) of the point at which the user touches thetouchscreen in zoom operation mode is interpreted as an indication ofthe desired angle of rotation in the plane of the map data. In someembodiments, displacing the user touch point upwards rotates theorientation of the points of the compass by a number of degreesproportional to the vertical displacement.

As shown in FIGS. 10 to 12, the input of a (left-handed) user isdisplayed as a partially transparent lobe component extending from theleft-hand side of an example map GUI and overlaying map data in a firstview. The furthest extent of the lobe component rightwards from the edgetogether with its vertical position corresponds to the current positionat which the user is touching a touchscreen of a display devicedisplaying the example map GUI. In essence, FIGS. 10 to 12 show themirror image of the interface in FIGS. 7 to 9.

FIG. 10 illustrates a further embodiment of a map GUI in zoom operationmode. The horizontal displacement 1002 of the rightwards lobe componentis seen to be within a relatively short distance from the left-handedge, in a range from 0>X>X₁, where X₁ is the boundary of the range ofhorizontal displacement values associated with a zoom operation mode.Vertical displacement (Y) of the point at which the user touches thetouchscreen in zoom operation mode is interpreted as an indication ofthe desired level of zoom (i.e. map scale). In some embodiments, thevertical displacement relative to the lower edge of the screen is inlinear proportion to the desired level of zoom. In some embodiments, thevertical displacement relative to the lower edge of the screen is inlogarithmic proportion to the desired level of zoom.

FIG. 11 illustrates the map GUI in tilt operation mode. The horizontaldisplacement 1102 of the rightwards lobe component is seen to be withina distance from the left-hand edge, in a range from X₁>X>X₂, where X₂ isthe upper boundary of the range of horizontal displacement valuesassociated with a tilt operation mode. The underlying map data is seento be viewed in a second view, presenting the map data in athree-dimensional projection having a lower viewing angle than in thefirst view illustrated in FIG. 10. Vertical displacement (Y) of thepoint at which the user touches the touchscreen in tilt operation modeis interpreted as an indication of the desired viewing angle (i.e. angleof tilt relative to a normal viewing angle from directly above).

FIG. 12 illustrates the map GUI in rotate operation mode. The horizontaldisplacement 1202 of the rightwards lobe component is seen to be withina distance from the left-hand edge, in a range from X₂>X>X₃, where X₃ isthe upper boundary of the range of horizontal displacement valuesassociated with a rotate operation mode. For the sake of illustration,the underlying map data is overlaid by an indicator of rotation.Vertical displacement (Y) of the point at which the user touches thetouchscreen in zoom operation mode is interpreted as an indication ofthe desired angle of rotation in the plane of the map data. In someembodiments, displacing the user touch point upwards rotates theorientation of the points of the compass by a number of degreesproportional to the vertical displacement.

Throughout this specification, plural instances may implementcomponents, operations, or structures described as a single instance.Although individual operations of one or more methods are illustratedand described as separate operations, one or more of the individualoperations may be performed concurrently, and nothing requires that theoperations be performed in the order illustrated. Structures andfunctionality presented as separate components in example configurationsmay be implemented as a combined structure or component. Similarly,structures and functionality presented as a single component may beimplemented as separate components. These and other variations,modifications, additions, and improvements fall within the scope of thesubject matter herein.

Although an overview of the inventive subject matter has been describedwith reference to specific example embodiments, various modificationsand changes may be made to these embodiments without departing from thebroader scope of embodiments of the present disclosure.

The embodiments illustrated herein are described in sufficient detail toenable those skilled in the art to practice the teachings disclosed.Other embodiments may be used and derived therefrom, such thatstructural and logical substitutions and changes may be made withoutdeparting from the scope of this disclosure. The Detailed Description,therefore, is not to be taken in a limiting sense, and the scope ofvarious embodiments is defined only by the appended claims, along withthe full range of equivalents to which such claims are entitled.

As used herein, the term “or” may be construed in either an inclusive orexclusive sense. Moreover, plural instances may be provided forresources, operations, or structures described herein as a singleinstance. Additionally, boundaries between various resources,operations, modules, engines, and data stores are somewhat arbitrary,and particular operations are illustrated in a context of specificillustrative configurations. Other allocations of functionality areenvisioned and may fall within a scope of various embodiments of thepresent disclosure. In general, structures and functionality presentedas separate resources in the example configurations may be implementedas a combined structure or resource. Similarly, structures andfunctionality presented as a single resource may be implemented asseparate resources. These and other variations, modifications,additions, and improvements fall within a scope of embodiments of thepresent disclosure as represented by the appended claims. Thespecification and drawings are, accordingly, to be regarded in anillustrative rather than a restrictive sense.

“Signal Medium” refers to any intangible medium that is capable ofstoring, encoding, or carrying the instructions for execution by amachine and includes digital or analog communications signals or otherintangible media to facilitate communication of software or data. Theterm “signal medium” shall be taken to include any form of a modulateddata signal, carrier wave, and so forth. The term “modulated datasignal” means a signal that has one or more of its characteristics setor changed in such a matter as to encode information in the signal. Theterms “transmission medium” and “signal medium” mean the same thing andmay be used interchangeably in this disclosure.

“Communication Network” refers to one or more portions of a network thatmay be an ad hoc network, an intranet, an extranet, a virtual privatenetwork (VPN), a local area network (LAN), a wireless LAN (WLAN), a widearea network (WAN), a wireless WAN (WWAN), a metropolitan area network(MAN), the Internet, a portion of the Internet, a portion of the PublicSwitched Telephone Network (PSTN), a plain old telephone service (POTS)network, a cellular telephone network, a wireless network, a Wi-Fi®network, another type of network, or a combination of two or more suchnetworks. For example, a network or a portion of a network may include awireless or cellular network and the coupling may be a Code DivisionMultiple Access (CDMA) connection, a Global System for Mobilecommunications (GSM) connection, or other types of cellular or wirelesscoupling. In this example, the coupling may implement any of a varietyof types of data transfer technology, such as Single Carrier RadioTransmission Technology (1×RTT), Evolution-Data Optimized (EVDO)technology, General Packet Radio Service (GPRS) technology, EnhancedData rates for GSM Evolution (EDGE) technology, third GenerationPartnership Project (3GPP) including 3G, fourth generation wireless (4G)networks, Universal Mobile Telecommunications System (UMTS), High SpeedPacket Access (HSPA), Worldwide Interoperability for Microwave Access(WiMAX), Long Term Evolution (LTE) standard, others defined by variousstandard-setting organizations, other long-range protocols, or otherdata transfer technology.

“Processor” refers to any circuit or virtual circuit (a physical circuitemulated by logic executing on an actual processor) that manipulatesdata values according to control signals (e.g., “commands”, “op codes”,“machine code”, etc.) and which produces corresponding output signalsthat are applied to operate a machine. A processor may, for example, bea Central Processing Unit (CPU), a Reduced Instruction Set Computing(RISC) processor, a Complex Instruction Set Computing (CISC) processor,a Graphics Processing Unit (GPU), a Digital Signal Processor (DSP), anApplication Specific Integrated Circuit (ASIC), a Radio-FrequencyIntegrated Circuit (RFIC) or any combination thereof. A processor mayfurther be a multi-core processor having two or more independentprocessors (sometimes referred to as “cores”) that may executeinstructions contemporaneously.

“Machine-Storage Medium” refers to a single or multiple storage devicesand/or media (e.g., a centralized or distributed database, and/orassociated caches and servers) that store executable instructions,routines and/or data. The term shall accordingly be taken to include,but not be limited to, solid-state memories, and optical and magneticmedia, including memory internal or external to processors. Specificexamples of machine-storage media, computer-storage media and/ordevice-storage media include non-volatile memory, including by way ofexample semiconductor memory devices, e.g., erasable programmableread-only memory (EPROM), electrically erasable programmable read-onlymemory (EEPROM), FPGA, and flash memory devices; magnetic disks such asinternal hard disks and removable disks; magneto-optical disks; andCD-ROM and DVD-ROM disks The terms “machine-storage medium,”“device-storage medium,” “computer-storage medium” mean the same thingand may be used interchangeably in this disclosure. The terms“machine-storage media,” “computer-storage media,” and “device-storagemedia” specifically exclude carrier waves, modulated data signals, andother such media, at least some of which are covered under the term“signal medium.”

“Component” refers to a device, physical entity, or logic havingboundaries defined by function or subroutine calls, branch points, APIs,or other technologies that provide for the partitioning ormodularization of particular processing or control functions. Componentsmay be combined via their interfaces with other components to carry outa machine process. A component may be a packaged functional hardwareunit designed for use with other components and a part of a program thatusually performs a particular function of related functions. Componentsmay constitute either software components (e.g., code embodied on amachine-readable medium) or hardware components. A “hardware component”is a tangible unit capable of performing certain operations and may beconfigured or arranged in a certain physical manner. In various exampleembodiments, one or more computer systems (e.g., a standalone computersystem, a client computer system, or a server computer system) or one ormore hardware components of a computer system (e.g., a processor or agroup of processors) may be configured by software (e.g., an applicationor application portion) as a hardware component that operates to performcertain operations as described herein. A hardware component may also beimplemented mechanically, electronically, or any suitable combinationthereof. For example, a hardware component may include dedicatedcircuitry or logic that is permanently configured to perform certainoperations. A hardware component may be a special-purpose processor,such as a field-programmable gate array (FPGA) or an applicationspecific integrated circuit (ASIC). A hardware component may alsoinclude programmable logic or circuitry that is temporarily configuredby software to perform certain operations. For example, a hardwarecomponent may include software executed by a general-purpose processoror other programmable processor. Once configured by such software,hardware components become specific machines (or specific components ofa machine) uniquely tailored to perform the configured functions and areno longer general-purpose processors. It will be appreciated that thedecision to implement a hardware component mechanically, in dedicatedand permanently configured circuitry, or in temporarily configuredcircuitry (e.g., configured by software), may be driven by cost and timeconsiderations. Accordingly, the phrase “hardware component” (or“hardware-implemented component”) should be understood to encompass atangible entity, be that an entity that is physically constructed,permanently configured (e.g., hardwired), or temporarily configured(e.g., programmed) to operate in a certain manner or to perform certainoperations described herein. Considering embodiments in which hardwarecomponents are temporarily configured (e.g., programmed), each of thehardware components need not be configured or instantiated at any oneinstance in time. For example, where a hardware component comprises ageneral-purpose processor configured by software to become aspecial-purpose processor, the general-purpose processor may beconfigured as respectively different special-purpose processors (e.g.,comprising different hardware components) at different times. Softwareaccordingly configures a particular processor or processors, forexample, to constitute a particular hardware component at one instanceof time and to constitute a different hardware component at a differentinstance of time. Hardware components can provide information to, andreceive information from, other hardware components. Accordingly, thedescribed hardware components may be regarded as being communicativelycoupled. Where multiple hardware components exist contemporaneously,communications may be achieved through signal transmission (e.g., overappropriate circuits and buses) between or among two or more of thehardware components. In embodiments in which multiple hardwarecomponents are configured or instantiated at different times,communications between such hardware components may be achieved, forexample, through the storage and retrieval of information in memorystructures to which the multiple hardware components have access. Forexample, one hardware component may perform an operation and store theoutput of that operation in a memory device to which it iscommunicatively coupled. A further hardware component may then, at alater time, access the memory device to retrieve and process the storedoutput. Hardware components may also initiate communications with inputor output devices, and can operate on a resource (e.g., a collection ofinformation). The various operations of example methods described hereinmay be performed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implementedcomponents that operate to perform one or more operations or functionsdescribed herein. As used herein, “processor-implemented component”refers to a hardware component implemented using one or more processors.Similarly, the methods described herein may be at least partiallyprocessor-implemented, with a particular processor or processors beingan example of hardware. For example, at least some of the operations ofa method may be performed by one or more processors 1004 orprocessor-implemented components. Moreover, the one or more processorsmay also operate to support performance of the relevant operations in a“cloud computing” environment or as a “software as a service” (SaaS).For example, at least some of the operations may be performed by a groupof computers (as examples of machines including processors), with theseoperations being accessible via a network (e.g., the Internet) and viaone or more appropriate interfaces (e.g., an API). The performance ofcertain of the operations may be distributed among the processors, notonly residing within a single machine, but deployed across a number ofmachines. In some example embodiments, the processors orprocessor-implemented components may be located in a single geographiclocation (e.g., within a home environment, an office environment, or aserver farm). In other example embodiments, the processors orprocessor-implemented components may be distributed across a number ofgeographic locations.

“Carrier Signal” refers to any intangible medium that is capable ofstoring, encoding, or carrying instructions for execution by themachine, and includes digital or analog communications signals or otherintangible media to facilitate communication of such instructions.Instructions may be transmitted or received over a network using atransmission medium via a network interface device.

“Computer-Readable Medium” refers to both machine-storage media andtransmission media. Thus, the terms include both storage devices/mediaand carrier waves/modulated data signals. The terms “machine-readablemedium,” “computer-readable medium” and “device-readable medium” meanthe same thing and may be used interchangeably in this disclosure.

“Client Device” refers to any machine that interfaces to acommunications network to obtain resources from one or more serversystems or other client devices. A client device may be, but is notlimited to, a mobile phone, desktop computer, laptop, portable digitalassistants (PDAs), smartphones, tablets, ultrabooks, netbooks, laptops,multi-processor systems, microprocessor-based or programmable consumerelectronics, game consoles, set-top boxes, or any other communicationdevice that a user may use to access a network.

What is claimed is:
 1. A method comprising: causing display of ageographically-based graphical user interface on a display screen of aportable display device, the geographically-based graphical userinterface including map data, the map data being displayed in a firstview; receiving input comprising at least one input point; determiningat least a first characteristic and a second characteristic of theinput, the second characteristic being different from the firstcharacteristic; processing, when the first characteristic of the inputfulfils a first operational mode criterion, the input according to afirst operational mode and causing display, on the display screen, ofthe map data in a second view, the second view being based on the secondcharacteristic of the input; and processing, when the firstcharacteristic of the input fulfils a second operational mode criterion,the input according to a second operational mode, the second operationalmode criterion being different from the first operational mode criterionand the second operational mode being different from the firstoperational mode, and causing display, on the display screen, of the mapdata in a third view, the third view being based on the secondcharacteristic of the input.